package top.xiangqifu.springboot2.user.service;

import org.springframework.transaction.annotation.Transactional;
import top.xiangqifu.springboot2.user.base.BaseDataResult;
import top.xiangqifu.springboot2.user.base.BasePageResult;
import top.xiangqifu.springboot2.user.base.BaseResult;
import top.xiangqifu.springboot2.user.base.PageBean;
import top.xiangqifu.springboot2.user.entity.TbUser;
import top.xiangqifu.springboot2.user.vo.UserInfo;

import java.util.List;


public interface AuthService {
    /**
     * 默认角色，用户
     */
    int ROLE_USER = 2;

    /**
     * 获取当前登入用户信息
     * @return 返回当前登入用户信息
     */
    BaseDataResult<UserInfo> getLoginUser();

    /**
     * 获取用户信息
     * @param uid 用户id
     * @return 返回完整用户信息
     */
    UserInfo queryById(Integer uid);

    /**
     * 注册
     * @param tbUser 用户对象
     * @return 返回成功应答
     */
    @Transactional
    BaseResult reg(TbUser tbUser);



    /**
     * 权限认证
     * @return 是否存在访问权限
     */
    boolean checkAuth();


    /**
     * 登入
     * @param user 用户对象
     * @return 返回token信息
     */
    BaseResult login(TbUser user);

    /**
     * 查看被冻结的账号
     * @param deleted 是否冻结
     * @param pageBean 分页对象
     * @return 返回被冻结用户
     */
    BasePageResult<List<TbUser>> queryDelete(String deleted, PageBean pageBean);

    BaseResult update(TbUser user);

    /**
     * 冻结
     * @param id 用户id
     * @return 成功语句
     */
    BaseResult delete(Integer id);
}
